package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.Comment;
import cn.wolfcode.trip.base.domain.CommentHistory;
import cn.wolfcode.trip.base.query.CommentQueryObject;
import cn.wolfcode.trip.base.query.QueryObject;
import cn.wolfcode.trip.base.vo.CommentTreeVo;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface ICommentService {

    /**
     * 获取攻略评论的二级评论
     * @param qo
     * @return
     */
    List<CommentTreeVo> getCommentByUserIdAndType(CommentQueryObject qo);


    /**
     * 添加二级评论
     * @param qo
     * @param comment
     */
    void addCommentHistory(CommentHistory commentHistory);


    /**
     * 根据用户的id未读状态的评论的标志为已读
     * @param qo
     */
    void changeStateByUserId(Long qo);


    //------------------------------------------------------
    /**
     * 根据主题的i的和该主题的类型 获取评论树集合
     * @param topicId 主题id
     * @param type 内容类型
     * @return
     */
    List<CommentTreeVo> listCommentTree(CommentQueryObject qo);

    /**
     * 获取评论树集合被调用方法
     * @param topicId (贴在)主题id
     * @param type 类型
     * @return 评论集合
     * @throws Exception
     */
    List<CommentTreeVo> listTree(CommentQueryObject qo);

    /**
     * 添加评论
     * @param parent
     * @param topicId
     * @param type
     */
    void addTree(CommentTreeVo parent,CommentQueryObject qo);

    /**
     * 获取我的评论
     * @param qo
     * @return
     */
    PageInfo listMyComment(CommentQueryObject userId);

    /**
     * 获取用户的未读评论数
     * @param usereId
     * @return
     */
    Integer getUnreadComment(QueryObject qo);

    /**
     * 修改我的消息为已读
     * @param userId
     */
    void changeStates(Long userId);

    /**
     * 获取评论了我的未读消息
     * @param id
     * @return
     */
    PageInfo<Map> listUnreadMessage(CommentQueryObject qo);

    /**
     * 添加朋友圈评论
     * @param topicId
     */
    void addFriendComment(CommentHistory commentHistory);
}